import pandas as pd
from nebula_data_engine.nebula_data_engine import NebulaDataEngine

# 创建包含用户数据的字典
data = {
    'user': pd.DataFrame({
        'id': [1, 2, 3, 4],
        'name': ['Alice', 'Bob', 'Charlie', 'David'],
        'age': [24, 27, 22, 32],
        'city': ['New York', 'Los Angeles', 'Chicago', 'Houston']
    })
}

# 初始化数据引擎
engine = NebulaDataEngine(data)

# 1. 查询所有数据
print("1. 查询所有用户数据:")
result = engine.findAll(table_name="user")
print(result)

# 2. 插入数据
print("\n2. 插入一条新用户数据:")
new_id = engine.save({'name': 'Eve', 'age': 29, 'city': 'San Francisco'}, table_name="user")
print(f"插入的数据 ID: {new_id}")

# 查询所有用户数据，查看插入结果
result = engine.findAll(table_name="user")
print("插入后的所有用户数据:")
print(result)

# 3. 查询特定数据
print("\n3. 查询年龄大于 25 的用户:")
result = engine.find({'age': {'$gt': 25}}, table_name="user")
print(result)

# 4. 更新数据
print("\n4. 更新名字为 'Bob' 的用户年龄:")
engine.update({'name': 'Bob'}, {'age': 30}, table_name="user")

# 查询所有用户数据，查看更新结果
result = engine.findAll(table_name="user")
print("更新后的所有用户数据:")
print(result)

# 5. 根据 ID 更新数据
print("\n5. 根据 ID 更新用户数据:")
engine.updateById(3, {'age': 23}, table_name="user")

# 查询所有用户数据，查看更新结果
result = engine.findAll(table_name="user")
print("根据 ID 更新后的所有用户数据:")
print(result)

# 6. 删除数据
print("\n6. 删除名字为 'Charlie' 的用户:")
deleted_count = engine.delete({'name': 'Charlie'}, table_name="user")
print(f"删除了 {deleted_count} 条数据")

# 查询所有用户数据，查看删除结果
result = engine.findAll(table_name="user")
print("删除后的所有用户数据:")
print(result)

# 7. 根据 ID 删除数据
print("\n7. 根据 ID 删除用户数据:")
deleted_count = engine.deleteById(4, table_name="user")
print(f"根据 ID 删除了 {deleted_count} 条数据")

# 查询所有用户数据，查看删除结果
result = engine.findAll(table_name="user")
print("根据 ID 删除后的所有用户数据:")
print(result)

# 8. 分页查询数据
print("\n8. 分页查询用户数据:")
page_data = engine.findPage({}, page=1, page_size=2, table_name="user")
print("第一页的用户数据:")
print(page_data)

page_data = engine.findPage({}, page=2, page_size=2, table_name="user")
print("第二页的用户数据:")
print(page_data)

# 9. 根据 ID 查询数据
print("\n9. 根据 ID 查询用户数据:")
result = engine.findById(2, table_name="user")
print("ID 为 2 的用户数据:")
print(result)

# 10. 使用 MongoDB 作为数据源
print("\n10. 使用 MongoDB 作为数据源:")
# 使用 MongoDB 连接字符串初始化数据引擎
# engine = NebulaDataEngine('mongodb://localhost:27017/mydatabase', table_name='users')

# 插入数据
# new_id = engine.save({'name': 'Grace', 'age': 55})

# 查询数据
# result = engine.find({'name': 'Grace'})
# print("查询结果:", result)

# 11. 使用文件作为数据源
print("\n11. 使用文件作为数据源:")
# 使用 CSV 文件初始化数据引擎
# engine = NebulaDataEngine('data.csv', table_name='users')

# 插入数据
# new_id = engine.save({'name': 'Henry', 'age': 60})

# 查询数据
# result = engine.find({'name': 'Henry'})
# print("查询结果:", result)